columnview: Fix more issues with column resizing
authorMatthias Clasen <mclasen@redhat.com>
Mon, 19 Oct 2020 12:27:35 +0000 (08:27 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 19 Oct 2020 12:30:05 +0000 (08:30 -0400)
Make it so that for overlapping resize rectangles (with
very narrow columns), we prefer the narrow column, so you
can regrow a column after shrinking it all the way.

Related: #3274

gtk/gtkcolumnview.c

index f983f7c03b5617d8e17dd1bef736be3b2bf23d08..66ff4c4d96cacf4fdc29de7df9986a764ac74f7f 100644 (file)
@@ -906,7 +906,7 @@ header_drag_begin (GtkGestureDrag *gesture,
   self->drag_pos = -1;
 
   n = g_list_model_get_n_items (G_LIST_MODEL (self->columns));
-  for (i = 0; !self->in_column_resize && i < n; i++)
+  for (i = n - 1; !self->in_column_resize && i >= 0; i--)
     {
       GtkColumnViewColumn *column = g_list_model_get_item (G_LIST_MODEL (self->columns), i);
 
@@ -936,6 +936,17 @@ header_drag_begin (GtkGestureDrag *gesture,
           g_object_unref (column);
           break;
         }
+    }
+
+  for (i = 0; !self->in_column_resize && i < n; i++)
+    {
+      GtkColumnViewColumn *column = g_list_model_get_item (G_LIST_MODEL (self->columns), i);
+
+      if (!gtk_column_view_column_get_visible (column))
+        {
+          g_object_unref (column);
+          continue;
+        }
 
       if (gtk_column_view_get_reorderable (self) &&
           gtk_column_view_in_header (self, column, start_x, start_y))